package encrypt

import (
	"crypto/md5"
	"encoding/hex"
	"fmt"
	"strings"
)

const (
	tempSalt = "gomall"
)

// md5自动加盐...之前的密码就不行啦
func Md5(s string) string {
	h := md5.New()
	h.Write([]byte(s))
	return hex.EncodeToString(h.Sum(nil))
}

func Md5Byte(by []byte) string {
	h := md5.New()
	h.Write(by)
	return hex.EncodeToString(h.Sum(nil))
}

func FmtMd5(inter ...interface{}) string {
	key := F拼接参数(inter...)
	return Md5(key)
}

// 如果没有__，那么就返回全部跟一个空
func F按双划线切割字符串(theme, 切分符 string) (arr []string) {
	comma := strings.Index(theme, 切分符)
	if comma == -1 {
		arr = append(arr, theme, "")
		return
	}
	l := len([]rune(切分符))
	arr = append(arr, theme[:comma], theme[comma+l:])
	return
}

func F拼接参数(inter ...interface{}) (key string) {
	var ll string
	for range inter {
		ll += "%v"
	}
	key = fmt.Sprintf(ll, inter...) //先生成产品的key
	return
}

// md5自动加盐,这个盐可以自行设置,默认gomall,初始化后切勿修改!
func SaltMd5(s string) string {
	s = s + tempSalt
	return Md5(s)
}

func F获取加盐密码(s string) string {
	return SaltMd5(s)
}
